/**
 * @description 文件存储
*/

import { StoreDB } from '@daelui/dogjs/dist/components'
import fileManager from './file-manager.js'

class StoreFile extends StoreDB {
  constructor () {
    super()
    // #ifdef APP-PLUS
    // console.log('********************************')
    // let main = plus.android.runtimeMainActivity()
    // let sdRoot1 = main.getCacheDir()
    // let filesOne = plus.android.invoke(sdRoot1, 'listFiles')
    // let lenOne = filesOne.length
    // for (let i = 0; i < lenOne; i++) {
    //   let filePath = '' + filesOne[i]
    //   // 没有找到合适的方法获取路径，这样写可以转成文件路径
    //   plus.io.resolveLocalFileSystemURL(filePath, function(entry) {
    //     console.log(entry)
    //     if (entry.isDirectory) {
    //       // entry.removeRecursively(function(entry) {
    //       //   //递归删除其下的所有文件及子目录
    //       //   console.log('清理文件数据完成')
    //       // }, function(e) {
    //       //   console.log(e.message)
    //       // })
    //     } else {
    //       // entry.remove(function(entry) {
    //       //   // 递归删除其下的所有文件及子目录
    //       //   console.log('清理文件数据完成')
    //       // }, function(e) {
    //       //   console.log(e.message)
    //       // })
    //     }
    //   }, function(e) {
    //     console.log('清理文件数据失败')
    //   })
    // }

    // console.log('--------------------------------')
    // fileManager.saveFile('./uni-file/data.json',  , './uni-file/data.json')
    // fileManager.getFileContext('./uni-file/data.json').then(res => {
    //   console.log(res)
    // }).catch(e => {
    //   console.log(e)
    // })
    // fileManager.writeData([{a: 1}], function (res) {
    //   console.log(res)
    //   fileManager.readData(function(res) {
    //     console.log(res)
    //   })
    // })
    // #endif
  }
  /**
   * @function 获取存储器
   * @return {Object}
  */
  getStorage () {
    return {
      setItem: (key, value) => {
        return new Promise(function(ressolve, reject){
          fileManager.writeData(value, function (res) {
            res = res || {}
            if (res.state > 0) {
              ressolve()
            } else {
              reject()
            }
          })
        })
      },
      getItem (key) {
        return new Promise(function(ressolve, reject){
          fileManager.readData(function(res) {
            res = res || {}
            if (res.state > 0) {
              ressolve(res.data)
            } else {
              reject(null)
            }
          })
        })
      },
      clear () {
        fileManager.clearData()
      }
    }
  }
}

// 默认实例
const storeFile = new StoreFile

export default storeFile

export {
  StoreFile
}
